// JavaScript Document
//内核信息，转换内容区域与浏览器代码专用
KApp.define('kuoqi.core.canvas',{
	version:'base',//版本信息
	extends:'kuoqi.core',//使用继承的模型
	desc:'canvas画布的内核信息，会用这个做最终的很多操作',
	tips:[
		'当前的内核为kuoqi.core.canvas',
		'使用参数有 : width->canvas画布宽度',
		'height->canvas画布的高度'
	],
	
	width:1920,//画布宽度
	height:1080,//画布高度
	canvas:null,//元素canvas对象
	cvs:null,//元素canvas对应的2d对象
	element:[],//当前绑定的元素信息
	//渲染的函数
	flush:function(){
		var ths = this;
		//如果这个是一种操作，那么这种该如何操作呢
		this.beforeBehavior(function(){
			//好了，这个地方将本对象里面的所有东西进行一个初始化进入到app里面吧
			ths.flushApp();
			ths.ready();//执行具体的动作为action	
		});
		
	},
	
	//将内容信息冲刷到app里面
	flushApp:function(){
		this.canvas = $Q.createElement('canvas');
		this.cvs = this.canvas.getContext("2d");
		this.canvas.width = this.width;
		this.canvas.height = this.height;
		//var cvs = $Q(canvas);
		for(var i =0 ; i<this.element.length;i++ ){
			//var dom = this.element[i].getDom();//获取到固定的元素标签信息
			this.flushIn(this.element[i]);//将元素冲刷进入到当前的信息中
		}
		//最终渲染
		this.app.boxElement.html($Q(this.canvas));//
	},
	
	//将元素对象冲刷到本对象中
	flushIn:function(obj){
		//canvas加入canvas
		var ths = this;
		//document.createElement("canvas").getContext("2d");
		obj.getDom(function(dom){
			ths.cvs.drawImage(dom,obj.x,obj.y);
		});//获取dom元素信息
	},
	
	//待实现的函数信息
	beforeBehavior:function(callback){
		this.app.debug("数据初始化完成，请初始化["+this.route+"->beforeBehavior(callback)]函数进行相关的自定义初始化,callback为当使用本函数的时候的返回值作为继续向下执行的触发函数，返回中this为当前对象信息");	
		callback&&callback();
	},
	
	//当一个内核完全初始化之后会尝试执行该内核的ready方法
	ready:function(){
		//这个留给canvas来继续执行后续的相关操作，如果当前的对象不自定义的话
		
		this.app.debug("当一个内核完全初始化之后会尝试执行该内核的ready方法,，请初始化["+this.route+"->ready()]函数进行后续的操作");	
	},
	
	//增加一个元素
	append:function(canvas){
		this.element.push(canvas);	
	},
});